<?php

namespace Modules\Admin\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Modules\Admin\Http\Requests\RoleRequest;
use Spatie\Permission\Models\Role;

class RoleController extends Controller
{
    /**
     * Display a listing of the resource.
     * @return Response
     */
    public function index()
    {
        //获取角色所有数据
        $role = Role::where('name','!=', config('hd_module.webmaster'))->get();
        //dd($role);
        //加载首页 分配变量
        return view('admin::role.index',compact('role'));
    }

    /**
     * Show the form for creating a new resource.
     * @return Response
     */
    public function create()
    {
        return view('admin::create');
    }

    /**
     * Store a newly created resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function store(Request $request)
    {
        //roles表中的guard_name会自动找到守卫
        Role::create([
            'name' => $request->input('name'),
            'title' => $request->input('title'),
        ]);
        //设置闪存信息
        session()->flash('success','添加成功');
        //跳转
        return redirect()->route('role.index');



    }

    /**
     * Show the specified resource.
     * @return Response
     */
    public function show()
    {
        return view('admin::show');
    }

    /**
     * Show the form for editing the specified resource.
     * @return Response
     */
    public function edit()
    {
        return view('admin::edit');
    }

    /**
     * Update the specified resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function update(Request $request,$id,RoleRequest $roleRequest)
    {
        //找到编辑的id号
        $role = Role::find($id);
        //验证
        $role->title = $request->input('title');
        $role->name = $request->input('name');
        //写入数据库
        $role->save();
        //设置闪存信息
        session()->flash('success','角色编辑成功');
        //跳转
        return redirect()->route('role.index');

    }

    /**
     * Remove the specified resource from storage.
     * @return Response
     */
    public function destroy($id)
    {
        //用id去找到对应的角色数据
        $role = Role::find($id);
        //判断如果当前需要删除的角色的英文标识name名等于网站站长，就不能删除
        if ($role['name']==config('hd_module.webmaster')){
            session()->flash('danger','请不要挑战删除网站站长！！！');
            return back();
        }
       //执行删除
       Role::destroy($id) ;
       //设置闪存信息
        session()->flash('success','角色删除成功');
        //跳转
        return redirect()->route('role.index');

    }

    /**
     * 查看权限
     * 路由传参 ：form提交时需要参数
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function ShowPermission($roles){
        if ($roles==1){
            session()->flash('danger','你没有权限访问');
            return back();
        }
        //根据$roles获取对应的角色数据
        $role = Role::find($roles);
        //获取权限数据
        //获取权限根据守卫
        $permission = \HDModule::getPermissionByGuard('admin');
        //dump($permission);
        //加载模板
        return view('admin::role.permission',compact('permission','role'));
    }


    /**
     * 分配权限功能
     * @param Request $request
     * @param $roles
     * @return \Illuminate\Http\RedirectResponse
     */
    public function Jurisdiction(Request $request,$roles){

        //判断如果没选的话，就提醒至少选一个
        if (!$request->input('name')){
            //设置闪存信息
            session()->flash('danger','至少选一个!!!或者返回');
            //返回上一级
            return back();
        }

       //获取当前角色id所对应的角色
        $role = Role::find($roles);
        //dd($role);
        //为角色添加权限同步添加使用手册的同步方法为角色添加权限
        $role->syncPermissions($request->input('name'));
        //$role->syncPermissions($request->input('name'));
        //设置闪存信息
        session()->flash('success','权限设置成功');
        //跳转
        return redirect()->route('role.index');


    }





}
